"=========================================================================
" Description: vimrc configuration file, for Linux/Windows, GUI/Console
" Last Change: 2011-01-28
" Author:      chengjie.ding AT gmail DOT com
" Version:     0.1
"=========================================================================


set nocompatible                      " 关闭 vi 兼容模式

"""""""""""""""""""""""""""""""""
" Tab related
"""""""""""""""""""""""""""""""""
set tabstop=4                         " 设定 tab 长度为 4 
set shiftwidth=4                      " 设定 << 和 >> 命令移动时的宽度为 4
set smarttab                          " 按一下 Backspace 删除 4 个空格
set expandtab                         " 编辑时将所有 Tab 替换为空格
set ambiwidth=double                  " 防止特殊符号无法正常显示

"""""""""""""""""""""""""""""""""
" Format related
"""""""""""""""""""""""""""""""""
set textwidth=75                      " 设置光标超过75列的时候折行
set linebreak                         " 设置不再单词中间断行
set formatoptions+=mB                 " 打开断行模块对亚洲语言支持
" m 表示允许在两个汉字之间断行，即使汉字之间没有出现空格
" B 表示将两行合并为一行的时候，汉字与汉字之间不要补空格

"""""""""""""""""""""""""""""""""
" Indent related
"""""""""""""""""""""""""""""""""
set cindent                           " 打开 C/C++ 风格的自动缩进
set autoindent                        " 打开普通文件类型的自动缩进
set cinoptions=:0g0t0(susj1           " 设定 C/C++ 风格自动缩进的选项

"""""""""""""""""""""""""""""""""
" Editing related
"""""""""""""""""""""""""""""""""
set backspace=indent,eol,start        " 设定在插入状态用退格键和 Delete 键删除回车符
set whichwrap=b,s,<,>,[,]             " 开启部分键的跨行跳跃功能
set mouse=a                           " 在所有模式下启用鼠标
set selectmode=                       " 不使用 selectmode，如：mouse
set mousemodel=popup                  " 设置右键单击窗口时，弹出快捷菜单
set keymodel=                         " 禁用 Shift + 方向键 选择文本
set selection=inclusive               " 指定在选择文本时，光标所在位置也属于被选中的范围

"""""""""""""""""""""""""""""""""
" Misc
"""""""""""""""""""""""""""""""""
set wildmenu                          " 在命令模式下使用 Tab 自动补全的时候，将补全内容使用一个漂亮的单行菜单形式显示出来
"set spell                            " 打开拼写检查，将光标放在单词上，按 z= 就会出现拼写建议，按 ]s 可以直接跳到下一个拼写错误处

"""""""""""""""""""""""""""""""""
" Encoding related
"""""""""""""""""""""""""""""""""
set encoding=utf-8                    " vim 内部使用的字符编码方式
"set termencoding=gbk                 " vim 用于屏幕显示的编码方式
set fileencoding=utf-8                " vim 输出文件的编码方式
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1 " vim 自动解码顺序
"
" 强制解码:
"
" :e ++enc=utf-8 myfile.txt

"""""""""""""""""""""""""""""""""
" File type related
"""""""""""""""""""""""""""""""""
filetype plugin indent on             " 开启插件

"""""""""""""""""""""""""""""""""
" Display related
"""""""""""""""""""""""""""""""""
set langmenu=zh_CN.UTF-8              " 菜单编码
language message zh_CN.UTF-8          " 系统提示编码

set number                            " 显示行号
set ruler                             " 打开状态栏标尺
set hlsearch                          " 搜索时高亮显示被找到的文本
if (has("gui_running"))
    set guioptions+=b                 " 添加水平滚动条
    color torte                       " 选择 torte 配色方案
    set nowrap                        " 指定不折行
else
    color ron                         " 选择 ron 配色方案
    set wrap                          " 制定折行
endif
syntax on                             " 开启自动语法高亮

"=========================================================================
" Platform dependent settings
"=========================================================================
if (has("win32"))
    " Win32
    if (has("gui_running"))
        set guifont=Bitstream_Vera_Sans_Mono:h9:cANSI " GUI 界面字体设置
        " set guifontwide=NSimSun:h9:cGB2312          " GUI 字体宽度设置
    else
        set termencoding=gbk                          " vim 用于屏幕显示的编码方式
    endif
else
    if (has("gui_running"))
        set guifont=Bitstream\ Vera\ Sans\ Mono\ 9
    else
        set termencoding=utf-8
    endif
endif
